package tunnel

import (
	"time"
)

// cleanupCanceledRequests 清理已取消的请求记录（防止内存泄漏）
//
// 工作流程：
//  1. 每5分钟执行一次
//  2. 删除5分钟前标记的已取消请求
//  3. 删除5分钟前记录的警告日志
//
// 生命周期：
//   - 在 NewTunnelManager 中启动协程调用
func (tm *TunnelManager) cleanupCanceledRequests() {
	ticker := time.NewTicker(5 * time.Minute)
	defer ticker.Stop()

	for range ticker.C {
		now := time.Now()
		cutoff := now.Add(-5 * time.Minute)

		// 清理已取消的请求（简单清空，因为没有时间戳）
		tm.cancelMutex.Lock()
		tm.canceledRequests = make(map[string]bool)
		tm.cancelMutex.Unlock()

		// 清理已记录的警告
		tm.logMutex.Lock()
		for requestID, logTime := range tm.loggedWarnings {
			if logTime.Before(cutoff) {
				delete(tm.loggedWarnings, requestID)
			}
		}
		tm.logMutex.Unlock()
	}
}
